
package carmadness.view;

import java.awt.Color;

import carmadness.model.RoadSegment;
import carmadness.model.RoadSegmentWrapper;
import carmadness.model.World;
import carmadness.model.World.Position;

/**
 * Útelemet grafikus felületen megjelenítő osztály.
 * 
 * @author Ujhelyi
 * @version 1.0
 * @created 03-May-2010 8:00:00 PM
 */
public class GraphicRSRenderer extends GraphicRenderer
{
	/**
	 * A jármű kirajzolása előtt meghívódó metódus. Így a leszármazott
	 * osztályokban egyéb dekoráció vihető fel az útelemre.
	 * 
	 * @param rs
	 *            Kirajzolást alatt lévő útelem.
	 */
	protected void decorateRS( RoadSegment rs )
	{
	}

	/**
	 * A renderelést végző metódus.
	 * 
	 * 
	 * @param object
	 */
	public void render( Object object )
	{
		// Transzformációs mátrix elmentése
		pushTransform();

		// A RS-re kasztolt, kirajzolandó objektum
		RoadSegment rs = (RoadSegment)object;

		Position xypos = World.getInstance().getRSPlacementInWorld( rs );
		graphics.translate( 100 * xypos.getX(), 100 * xypos.getY() );

		// Törlés
		graphics.clearRect( 0, 0, 100, 100 );

		// Az út színe
		graphics.setColor( new Color( 20, 20, 20 ) );

		// Középső kör kirajzolása
		graphics.fillRect( 25, 25, 50, 50 );

		// Csatlakozások kirajzolása
		for ( RoadSegmentWrapper rsw : rs.getConnections() )
		{
			Renderer.getRenderer( rsw ).render( rsw );
		}

		// Egyéb dekoráció.
		decorateRS( rs );

		// Jármű kirajzolása
		if ( rs.getVehicle() != null )
		{
			Renderer.getRenderer( rs.getVehicle().getVehicle() ).render( rs.getVehicle().getVehicle() );
		}

		// Transzformációs mátrix visszaállítása
		popTransform();
	}
}
